package 代码随想录.二叉树;

import java.util.ArrayList;
import java.util.List;

public class _2二叉树的递归遍历 {
    /**
     * 144. 二叉树的前序遍历
     * https://leetcode.cn/problems/binary-tree-preorder-traversal/
     * 给你二叉树的根节点 root ，返回它节点值的 前序 遍历。
     */
    List<Integer> res = new ArrayList<>();
    public List<Integer> preorderTraversal(TreeNode root) {
        if(root==null)
            return res;
        res.add(root.val);
        preorderTraversal(root.left);
        preorderTraversal(root.right);
        return res;
    }

    /**
     * 145. 二叉树的后序遍历
     * https://leetcode.cn/problems/binary-tree-postorder-traversal/
     * 给你一棵二叉树的根节点 root ，返回其节点值的 后序遍历 。
     */
    public List<Integer> postorderTraversal(TreeNode root) {
        if(root==null)
            return res;
        postorderTraversal(root.left);
        postorderTraversal(root.right);
        res.add(root.val);
        return res;
    }

    /**
     * 94. 二叉树的中序遍历
     * https://leetcode.cn/problems/binary-tree-inorder-traversal/
     * 给定一个二叉树的根节点 root ，返回 它的 中序 遍历 。
     */
    public List<Integer> inorderTraversal(TreeNode root) {
        if(root==null)
            return res;
        inorderTraversal(root.left);
        res.add(root.val);
        inorderTraversal(root.right);
        return res;
    }

}
